package com.sql.azarias.uitls;

import android.net.Uri;
import android.support.annotation.DrawableRes;
import android.view.View;
import android.view.ViewGroup;

import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.controller.AbstractDraweeController;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.imagepipeline.common.ResizeOptions;
import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;

/**
 * Created by Administrator on 2017/3/13.
 */

public  class FrescoUitls {
    /**
     * 设置view大小。
     *
     * @param view  View。
     * @param width 指定宽。
     * @param width 指定高。
     */
    public static void requestLayout(View view, int width, int height) {
        ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
        if (layoutParams == null) {
            layoutParams = new ViewGroup.LayoutParams(width, height);
            view.setLayoutParams(layoutParams);
        } else {
            view.getLayoutParams().width = width;
            view.getLayoutParams().height = height;
            view.requestLayout();
        }
    }

    /**
     * 根据设计图宽高，计算出View在该屏幕上的实际宽高。
     *
     * @param width  设计图中View宽。
     * @param height 设计图中View高。
     */
    public static void calcRealSizeByDesign(View view, int width, int height) {
      /*  int realWidth, realHeight;
        realWidth = 设备屏幕宽度 * width / 设计图屏幕宽度;
        realHeight = measure[0] * height / width;
        requestLayout(view, realWidth, realHeight);*/
    }
    /**
     * 显示http或者https远程图片。
     *
     * @param draweeView imageView。
     * @param url        连接地址。
     */
    public static void showUrl(SimpleDraweeView draweeView, String url) {
        try {
            draweeView.setImageURI(Uri.parse(url));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 显示一个本地图片。
     *
     * @param draweeView imageView。
     * @param path       路径。
     * @param width      实际宽。
     * @param height     实际高度。
     */
    public static void showFile(SimpleDraweeView draweeView, String path, int width, int height) {
        try {
            Uri uri = Uri.parse("file://" + path);
            ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
                    .setResizeOptions(new ResizeOptions(width, height))
                    .build();
            AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
                    .setOldController(draweeView.getController())
                    .setImageRequest(request)
                    .build();
            draweeView.setController(controller);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 显示本地图片。
     *
     * @param draweeView imageView。
     * @param path       路径。
     */
    public static void showFile(SimpleDraweeView draweeView, String path) {
        try {
            Uri uri = Uri.parse("file://" + path);
            draweeView.setImageURI(uri);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 显示一个Res中的图片。
     *
     * @param draweeView ImageView。
     * @param resId      资源ID。
     */
    public static void showRes(SimpleDraweeView draweeView, @DrawableRes int resId) {
        try {
            // 你没看错，这里是三个///。
            draweeView.setImageURI(Uri.parse("res:///" + resId));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 显示content provider图片。
     *
     * @param draweeView image view。
     * @param path       路径。
     */
    public static void showContentProvider(SimpleDraweeView draweeView, String path) {
        try {
            draweeView.setImageURI(Uri.parse("content://" + path));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 显示Assets中的图片。
     *
     * @param draweeView ImageView.
     * @param path       路径。
     */
    public static void showAsset(SimpleDraweeView draweeView, String path) {
        try {
            draweeView.setImageURI(Uri.parse("asset://" + path));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
